home *** CD-ROM | disk | FTP | other *** search
/ Motor Sport Digital Archive Collection 1960s / Motor Sport Digital Archive Collection 1960s.iso / main.swf / scripts / mx / utils / Base64Encoder.as < prev    next >
Encoding:
Text File  |  2008-05-21  |  3.4 KB  |  131 lines

  1. package mx.utils
  2. {
  3.    import flash.utils.ByteArray;
  4.    
  5.    public class Base64Encoder
  6.    {
  7.       private static const ALPHABET:Array = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","+","/"];
  8.       
  9.       private var _output:String = "";
  10.       
  11.       private var _work:Array;
  12.       
  13.       private var _line:uint = 0;
  14.       
  15.       private var _count:uint = 0;
  16.       
  17.       public function Base64Encoder()
  18.       {
  19.          _output = "";
  20.          _work = [0,0,0];
  21.          _count = 0;
  22.          _line = 0;
  23.          super();
  24.       }
  25.       
  26.       public function flush() : String
  27.       {
  28.          var _loc1_:String = null;
  29.          if(_count > 0)
  30.          {
  31.             encodeBlock();
  32.          }
  33.          _loc1_ = drain();
  34.          _count = 0;
  35.          _line = 0;
  36.          _work[0] = 0;
  37.          _work[1] = 0;
  38.          _work[2] = 0;
  39.          return _loc1_;
  40.       }
  41.       
  42.       public function encodeBytes(param1:ByteArray, param2:uint = 0, param3:uint = 0) : void
  43.       {
  44.          var _loc4_:uint = 0;
  45.          var _loc5_:uint = 0;
  46.          if(param3 == 0)
  47.          {
  48.             param3 = param1.length;
  49.          }
  50.          _loc4_ = param1.position;
  51.          param1.position = param2;
  52.          _loc5_ = param2;
  53.          while(_loc5_ < param3)
  54.          {
  55.             _work[_count] = param1[_loc5_];
  56.             ++_count;
  57.             if(_count == _work.length || param2 + param3 - _loc5_ == 1)
  58.             {
  59.                encodeBlock();
  60.                _count = 0;
  61.                _work[0] = 0;
  62.                _work[1] = 0;
  63.                _work[2] = 0;
  64.             }
  65.             _loc5_++;
  66.          }
  67.          param1.position = _loc4_;
  68.       }
  69.       
  70.       public function encode(param1:String, param2:uint = 0, param3:uint = 0) : void
  71.       {
  72.          var _loc4_:uint = 0;
  73.          if(param3 == 0)
  74.          {
  75.             param3 = uint(param1.length);
  76.          }
  77.          _loc4_ = param2;
  78.          while(_loc4_ < param2 + param3)
  79.          {
  80.             _work[_count] = param1.charCodeAt(_loc4_);
  81.             ++_count;
  82.             if(_count == _work.length || param2 + param3 - _loc4_ == 1)
  83.             {
  84.                encodeBlock();
  85.                _count = 0;
  86.                _work[0] = 0;
  87.                _work[1] = 0;
  88.                _work[2] = 0;
  89.             }
  90.             _loc4_++;
  91.          }
  92.       }
  93.       
  94.       private function encodeBlock() : void
  95.       {
  96.          _output += ALPHABET[(_work[0] & 0xFF) >> 2];
  97.          _output += ALPHABET[(_work[0] & 3) << 4 | (_work[1] & 0xF0) >> 4];
  98.          if(_count > 1)
  99.          {
  100.             _output += ALPHABET[(_work[1] & 0x0F) << 2 | (_work[2] & 0xC0) >> 6];
  101.          }
  102.          else
  103.          {
  104.             _output += "=";
  105.          }
  106.          if(_count > 2)
  107.          {
  108.             _output += ALPHABET[_work[2] & 0x3F];
  109.          }
  110.          else
  111.          {
  112.             _output += "=";
  113.          }
  114.          if((_line = _line + 4) == 76)
  115.          {
  116.             _output += "\n";
  117.             _line = 0;
  118.          }
  119.       }
  120.       
  121.       public function drain() : String
  122.       {
  123.          var _loc1_:String = null;
  124.          _loc1_ = _output.toString();
  125.          _output = "";
  126.          return _loc1_;
  127.       }
  128.    }
  129. }
  130.  
  131.